package main

import (
	"fmt"
	"strconv"
	"time"
)

func main() {
	//var ch4 chan int
	//ch4 = make(chan int ,4)
	//fmt.Println(len(ch4))
	ch1 := make(chan int, 4)
	fmt.Println(len(ch1), cap(ch1))

	ch2 := make(chan int, 4)
	fmt.Println(len(ch2), cap(ch2))
	ch2 <- 2
	ch2 <- 3
	//当写入的数据 超过长度时   会报错！！
	fmt.Println(len(ch2), cap(ch2))

	ch3 := make(chan string, 5)
	//test4中是写入10个数据  我们缓存的大小是5
	go test4(ch3)
	//所以咱们先写入5个数据 再开始读出数据
	for v := range ch3 {
		time.Sleep(time.Second)
		fmt.Println("v:", v)
	}

}

func test4(ch chan string) {
	for i := 0; i < 10; i++ {
		ch <- "test-" + strconv.Itoa(i)
		//由于上面定义的chan大小为5所以程序会一下子就写入5个  然后再慢慢读写
		fmt.Println("开始写入数据", "test-"+strconv.Itoa(i))
	}
	close(ch)
}
